

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>The LLVM Lexicon &mdash; LLVM 3.2 documentation</title>
    
    <link rel="stylesheet" href="_static/llvm-theme.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '',
        VERSION:     '3.2',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <link rel="top" title="LLVM 3.2 documentation" href="index.html" />
    <link rel="up" title="User Guides" href="userguides.html" />
    <link rel="next" title="Advice on Packaging LLVM" href="Packaging.html" />
    <link rel="prev" title="Frequently Asked Questions (FAQ)" href="FAQ.html" />
<style type="text/css">
  table.right { float: right; margin-left: 20px; }
  table.right td { border: 1px solid #ccc; }
</style>

  </head>
  <body>
<div class="logo">
  <a href="index.html">
    <img src="_static/logo.png"
         alt="LLVM Logo" width="250" height="88"/></a>
</div>

    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="Packaging.html" title="Advice on Packaging LLVM"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="FAQ.html" title="Frequently Asked Questions (FAQ)"
             accesskey="P">previous</a> |</li>
  <li><a href="http://llvm.org/">LLVM Home</a>&nbsp;|&nbsp;</li>
  <li><a href="index.html">Documentation</a>&raquo;</li>

          <li><a href="userguides.html" accesskey="U">User Guides</a> &raquo;</li> 
      </ul>
    </div>

      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h3><a href="index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">The LLVM Lexicon</a><ul>
<li><a class="reference internal" href="#definitions">Definitions</a><ul>
<li><a class="reference internal" href="#a">A</a></li>
<li><a class="reference internal" href="#b">B</a></li>
<li><a class="reference internal" href="#c">C</a></li>
<li><a class="reference internal" href="#d">D</a></li>
<li><a class="reference internal" href="#f">F</a></li>
<li><a class="reference internal" href="#g">G</a></li>
<li><a class="reference internal" href="#h">H</a></li>
<li><a class="reference internal" href="#i">I</a></li>
<li><a class="reference internal" href="#l">L</a></li>
<li><a class="reference internal" href="#m">M</a></li>
<li><a class="reference internal" href="#o">O</a></li>
<li><a class="reference internal" href="#p">P</a></li>
<li><a class="reference internal" href="#r">R</a></li>
<li><a class="reference internal" href="#s">S</a></li>
<li><a class="reference internal" href="#t">T</a></li>
</ul>
</li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="FAQ.html"
                        title="previous chapter">Frequently Asked Questions (FAQ)</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="Packaging.html"
                        title="next chapter">Advice on Packaging LLVM</a></p>
  <h3>This Page</h3>
  <ul class="this-page-menu">
    <li><a href="_sources/Lexicon.txt"
           rel="nofollow">Show Source</a></li>
  </ul>
<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="the-llvm-lexicon">
<span id="lexicon"></span><h1>The LLVM Lexicon<a class="headerlink" href="#the-llvm-lexicon" title="Permalink to this headline">¶</a></h1>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This document is a work in progress!</p>
</div>
<div class="section" id="definitions">
<h2>Definitions<a class="headerlink" href="#definitions" title="Permalink to this headline">¶</a></h2>
<div class="section" id="a">
<h3>A<a class="headerlink" href="#a" title="Permalink to this headline">¶</a></h3>
<dl class="docutils">
<dt><strong>ADCE</strong></dt>
<dd>Aggressive Dead Code Elimination</dd>
</dl>
</div>
<div class="section" id="b">
<h3>B<a class="headerlink" href="#b" title="Permalink to this headline">¶</a></h3>
<dl class="docutils">
<dt><strong>BB Vectorization</strong></dt>
<dd>Basic Block Vectorization</dd>
<dt><strong>BURS</strong></dt>
<dd>Bottom Up Rewriting System &#8212; A method of instruction selection for code
generation.  An example is the <a class="reference external" href="http://www.program-transformation.org/Transform/BURG">BURG</a> tool.</dd>
</dl>
</div>
<div class="section" id="c">
<h3>C<a class="headerlink" href="#c" title="Permalink to this headline">¶</a></h3>
<dl class="docutils">
<dt><strong>CSE</strong></dt>
<dd>Common Subexpression Elimination. An optimization that removes common
subexpression compuation. For example <tt class="docutils literal"><span class="pre">(a+b)*(a+b)</span></tt> has two subexpressions
that are the same: <tt class="docutils literal"><span class="pre">(a+b)</span></tt>. This optimization would perform the addition
only once and then perform the multiply (but only if it&#8217;s compulationally
correct/safe).</dd>
</dl>
</div>
<div class="section" id="d">
<h3>D<a class="headerlink" href="#d" title="Permalink to this headline">¶</a></h3>
<dl class="docutils">
<dt><strong>DAG</strong></dt>
<dd>Directed Acyclic Graph</dd>
</dl>
<dl class="docutils" id="derived-pointers">
<span id="derived-pointer"></span><dt><strong>Derived Pointer</strong></dt>
<dd>A pointer to the interior of an object, such that a garbage collector is
unable to use the pointer for reachability analysis. While a derived pointer
is live, the corresponding object pointer must be kept in a root, otherwise
the collector might free the referenced object. With copying collectors,
derived pointers pose an additional hazard that they may be invalidated at
any <a class="reference internal" href="#safe-point">safe point</a>. This term is used in opposition to <a class="reference internal" href="#object-pointer">object pointer</a>.</dd>
<dt><strong>DSA</strong></dt>
<dd>Data Structure Analysis</dd>
<dt><strong>DSE</strong></dt>
<dd>Dead Store Elimination</dd>
</dl>
</div>
<div class="section" id="f">
<h3>F<a class="headerlink" href="#f" title="Permalink to this headline">¶</a></h3>
<dl class="docutils">
<dt><strong>FCA</strong></dt>
<dd>First Class Aggregate</dd>
</dl>
</div>
<div class="section" id="g">
<h3>G<a class="headerlink" href="#g" title="Permalink to this headline">¶</a></h3>
<dl class="docutils">
<dt><strong>GC</strong></dt>
<dd>Garbage Collection. The practice of using reachability analysis instead of
explicit memory management to reclaim unused memory.</dd>
</dl>
</div>
<div class="section" id="h">
<h3>H<a class="headerlink" href="#h" title="Permalink to this headline">¶</a></h3>
<dl class="docutils" id="heap">
<dt><strong>Heap</strong></dt>
<dd>In garbage collection, the region of memory which is managed using
reachability analysis.</dd>
</dl>
</div>
<div class="section" id="i">
<h3>I<a class="headerlink" href="#i" title="Permalink to this headline">¶</a></h3>
<dl class="docutils">
<dt><strong>IPA</strong></dt>
<dd>Inter-Procedural Analysis. Refers to any variety of code analysis that
occurs between procedures, functions or compilation units (modules).</dd>
<dt><strong>IPO</strong></dt>
<dd>Inter-Procedural Optimization. Refers to any variety of code optimization
that occurs between procedures, functions or compilation units (modules).</dd>
<dt><strong>ISel</strong></dt>
<dd>Instruction Selection</dd>
</dl>
</div>
<div class="section" id="l">
<h3>L<a class="headerlink" href="#l" title="Permalink to this headline">¶</a></h3>
<dl class="docutils">
<dt><strong>LCSSA</strong></dt>
<dd>Loop-Closed Static Single Assignment Form</dd>
<dt><strong>LICM</strong></dt>
<dd>Loop Invariant Code Motion</dd>
<dt><strong>Load-VN</strong></dt>
<dd>Load Value Numbering</dd>
<dt><strong>LTO</strong></dt>
<dd>Link-Time Optimization</dd>
</dl>
</div>
<div class="section" id="m">
<h3>M<a class="headerlink" href="#m" title="Permalink to this headline">¶</a></h3>
<dl class="docutils">
<dt><strong>MC</strong></dt>
<dd>Machine Code</dd>
</dl>
</div>
<div class="section" id="o">
<h3>O<a class="headerlink" href="#o" title="Permalink to this headline">¶</a></h3>
<dl class="docutils" id="object-pointers">
<span id="object-pointer"></span><dt><strong>Object Pointer</strong></dt>
<dd>A pointer to an object such that the garbage collector is able to trace
references contained within the object. This term is used in opposition to
<a class="reference internal" href="#derived-pointer">derived pointer</a>.</dd>
</dl>
</div>
<div class="section" id="p">
<h3>P<a class="headerlink" href="#p" title="Permalink to this headline">¶</a></h3>
<dl class="docutils">
<dt><strong>PRE</strong></dt>
<dd>Partial Redundancy Elimination</dd>
</dl>
</div>
<div class="section" id="r">
<h3>R<a class="headerlink" href="#r" title="Permalink to this headline">¶</a></h3>
<p><strong>RAUW</strong></p>
<blockquote>
<div>Replace All Uses With. The functions <tt class="docutils literal"><span class="pre">User::replaceUsesOfWith()</span></tt>,
<tt class="docutils literal"><span class="pre">Value::replaceAllUsesWith()</span></tt>, and
<tt class="docutils literal"><span class="pre">Constant::replaceUsesOfWithOnConstant()</span></tt> implement the replacement of one
Value with another by iterating over its def/use chain and fixing up all of
the pointers to point to the new value.  See
also <a class="reference external" href="ProgrammersManual.html#iterate_chains">def/use chains</a>.</div></blockquote>
<dl class="docutils">
<dt><strong>Reassociation</strong></dt>
<dd>Rearranging associative expressions to promote better redundancy elimination
and other optimization.  For example, changing <tt class="docutils literal"><span class="pre">(A+B-A)</span></tt> into <tt class="docutils literal"><span class="pre">(B+A-A)</span></tt>,
permitting it to be optimized into <tt class="docutils literal"><span class="pre">(B+0)</span></tt> then <tt class="docutils literal"><span class="pre">(B)</span></tt>.</dd>
</dl>
<dl class="docutils" id="stack-roots">
<span id="roots"></span><dt><strong>Root</strong></dt>
<dd>In garbage collection, a pointer variable lying outside of the <a class="reference internal" href="#heap">heap</a> from
which the collector begins its reachability analysis. In the context of code
generation, &#8220;root&#8221; almost always refers to a &#8220;stack root&#8221; &#8212; a local or
temporary variable within an executing function.</dd>
<dt><strong>RPO</strong></dt>
<dd>Reverse postorder</dd>
</dl>
</div>
<div class="section" id="s">
<h3>S<a class="headerlink" href="#s" title="Permalink to this headline">¶</a></h3>
<dl class="docutils" id="safe-point">
<dt><strong>Safe Point</strong></dt>
<dd>In garbage collection, it is necessary to identify <a class="reference internal" href="#stack-roots">stack roots</a> so that
reachability analysis may proceed. It may be infeasible to provide this
information for every instruction, so instead the information may is
calculated only at designated safe points. With a copying collector,
<a class="reference internal" href="#derived-pointers">derived pointers</a> must not be retained across safe points and <a class="reference internal" href="#object-pointers">object
pointers</a> must be reloaded from stack roots.</dd>
<dt><strong>SDISel</strong></dt>
<dd>Selection DAG Instruction Selection.</dd>
<dt><strong>SCC</strong></dt>
<dd>Strongly Connected Component</dd>
<dt><strong>SCCP</strong></dt>
<dd>Sparse Conditional Constant Propagation</dd>
<dt><strong>SRoA</strong></dt>
<dd>Scalar Replacement of Aggregates</dd>
<dt><strong>SSA</strong></dt>
<dd>Static Single Assignment</dd>
<dt><strong>Stack Map</strong></dt>
<dd>In garbage collection, metadata emitted by the code generator which
identifies <a class="reference internal" href="#roots">roots</a> within the stack frame of an executing function.</dd>
</dl>
</div>
<div class="section" id="t">
<h3>T<a class="headerlink" href="#t" title="Permalink to this headline">¶</a></h3>
<dl class="docutils">
<dt><strong>TBAA</strong></dt>
<dd>Type-Based Alias Analysis</dd>
</dl>
</div>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="Packaging.html" title="Advice on Packaging LLVM"
             >next</a> |</li>
        <li class="right" >
          <a href="FAQ.html" title="Frequently Asked Questions (FAQ)"
             >previous</a> |</li>
  <li><a href="http://llvm.org/">LLVM Home</a>&nbsp;|&nbsp;</li>
  <li><a href="index.html">Documentation</a>&raquo;</li>

          <li><a href="userguides.html" >User Guides</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
        &copy; Copyright 2012, LLVM Project.
      Last updated on 2012-12-21.
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
    </div>
  </body>
</html>